草庐IT

function - 将动态创建的函数作为参数传递

全部标签

ruby - Ruby 方法能否作为迭代器产生或根据上下文返回数组?

我在Ruby中有一个任意方法可以产生多个值,因此可以将其传递给一个block:defarbitraryyield1yield2yield3yield4endarbitrary{|x|putsx}我想修改此方法,以便在没有block的情况下,它仅将值作为数组返回。所以这个构造也可以工作:myarray=arbitrarypa----->[1,2,3,4,5]这在Ruby中可行吗? 最佳答案 defarbitraryvalues=[1,2,3,4]returnvaluesunlessblock_given?values.each{|va

ruby - Rails:猴子修补 ActiveRecord::Base 与创建模块

我正在通读TheRails4way(由ObieFernandez撰写),一本关于Rails的著名书籍,从我目前阅读的内容来看,我强烈推荐它。但是,有一个示例部分9.2.7.1:MultipleCallbackMethodsinOneClass让我感到困惑:请耐心等待,为了让每个人都清楚问题,我在这个问题中复制了书中描述的步骤。该部分讨论了ActiveRecord回调(before_create、before_update等),并且可以创建一个类来为您处理多个回调。列出的代码如下:classAuditordefinitialize(audit_log)@audit_log=audit_l

ruby-on-rails - 使用传入的参数在 ActiveAdmin 中的模型上按方法过滤

使用Rails4.2.1和ActiveAdmin1.0.0.pre2我有一个有很多人入住的公寓模型。我希望管理员能够查看索引中的公寓是否与作为参数传入的日期重叠。我有一个关于公寓的方法defavailable_during(start_date,end_date)return!self.occupancies.any?{|occ|occ.date_range_overlap(Date.parse(start_date),Date.parse(end_date))}end如果公寓有任何与两个给定日期重叠的入住,则返回true。关于占用的方法date_range_overlap很容易解释。

ruby-on-rails - 在 Ruby on Rails 中,如何为 has_many 关系创建作用域?

这是一个例子:假设我有一个Student对象,它与ReportCard对象有has_many关系。ReportCard对象有一个名为“graded”的bool字段,用于标记它们已被评分。所以它看起来像:classStudent现在,假设您要创建一个默认范围,以便如果学生没有已评分的成绩单,您希望看到所有这些成绩单,但如果他们至少有一张已评分的成绩单,您只想查看已评分的成绩单.最后,假设您按“semester_number”排序。在ReportCard上使用此范围可以正常工作:scope:only_graded_if_possible,->(student){where(graded:t

ruby-on-rails - 为什么要测试:units and test:functionals insist on running in development environment?

我正在尝试测试一些特定于环境的设置(特定于中间件,但这似乎无关紧要),但我无法让测试在正确的环境中运行。症状:如果我运行rubytest/unit/my_test.rb,一切都很好,因为它做的第一件事是需要test/test_helper.rb,这会设置环境"test"然后加载Rails环境。如果我运行raketest,第一批(功能)运行良好,但第二批(单元)失败。失败是ENV['RAILS_ENV]以某种方式在批处理之间未设置,然后config/environment.rb看到没有设置并使用默认值"development“。环境在config/environment.rb的开头和该文

ruby-on-rails - Rails/postgres, 'foreign keys' 存储在数组中以创建一对多关联

可以使用postgres数组在rails(4)中创建一对多/has_many关联吗?我知道外键类型数组是不可能的。示例:一项任务有多个受让人。传统上我会使用关联表来解决这个问题:tasks->assignees->users。使用数组,这将不是必需的,因为可以存储多个“外键”。然后可以使用以下查询来获取分配给我的所有任务:select*fromtaskswhere?INtasks.assignees 最佳答案 您将无法让Rails识别此数组并将其用于关联。但是如果您想要更快地搜索/过滤分配给用户的任务,您可以在任务对象中保留一个用户

ruby - 如果我不指定 <programfile>,我如何将 <arguments> 传递给 IRB?

自:irb--help用法:irb.rb[选项][程序文件][参数]我知道如果我包含一个程序文件,我可以将参数传递给ARGV例如:irbtest.rbABC其中test.irb只是“pARGV”产生:["a","b","c"]使programfile在DOS中成为con...我可以执行以下操作irbconABCcon(main):001:0>ARGV产生:ARGV=>["A","B","C"]但这是系统相关的并且有回显输入的副作用:-(我真正喜欢的是类似的东西irb--abc顺便说一句:我知道我可以在irb中设置ARGV,但我的意图是别名special==irb-rSpecialLib

ruby - Ruby 中命名空间函数的最佳实践? (新手问题)

(StackOverflow告诉我这个问题是“主观的,可能会被关闭”……好吧,无论如何我都会试一试)我正在编写一堆辅助方法(用于TextMate包),我希望(并且我需要)将它们整齐地命名空间。这些方法实际上只是函数,也就是说,它们不会对自身作用域之外的任何东西进行操作,因此并不真正属于某个类。没有什么需要实例化。到目前为止,我一直在这样做,而且效果很好moduleHelpers::Foomodule_functiondefbar#...endendHelpers::Foo.bar#thisishowI'dliketocallthemethod/function但是这样会更好吗:1.跳过

ruby - 如何在 Ruby 中为 splat 参数设置默认值

为splat参数设置默认值会产生错误:1.9.3-p374:001>defab,*c=nil1.9.3-p374:002?>endSyntaxError:(irb):1:syntaxerror,unexpected'=',expecting';'or'\n'defab,*c=nil^from/Users/me/.rvm/rubies/ruby-1.9.3-p374/bin/irb:16:in`'我尝试过的一些变体也不起作用:1.9.3-p374:003>defab,*c=[]1.9.3-p374:005>defab,(*c)=nil1.9.3-p374:007>defab,(*c=[]

ruby-on-rails - 错误 : When assigning attributes, 您必须将散列作为参数传递

嗨,我刚开始使用ruby​​,我正在编写Controller和Controller规范,但我遇到了一些问题。文档.rbclassDocument文档Controller.rbclassAPI::DocumentsControllerdocuments_controller_spec.rbdescribe"POST'index'"dobefore{@attr=FactoryGirl.attributes_for(:document)}describe"failure"dodescribe"withmissingparameters"dobefore{@attr.each{|key,val